package com.cgt.day5.Exercise;

import org.junit.Test;

public class Demo {

    @Test
    public void test1(){
        Student.print();//静态方法
//        非静态方法和非静态属性可以在当前对象实例没有创建前进行调用
        Student student = new Student(1,20,"lihua","男","5006");
        student.study();
        student.toString();//重载
        student.show();//重载
        System.out.println(student);
        System.out.println(student.toString());

        student.show();//非静态方法  重载
        student.print();//静态方法
        System.out.println(Student.country);//静态属性
        Student.print();//静态方法
//
        Subject subject = new Student();//接口
        subject.chooseSubject();//接口的方法
//        subject.print();//子类独有的方法
//        subject.show();//子类重写的父类的方法
//        只有接口里有的方法才能通过接口实现

        Student student1 = new Student();
        student1.stu();
        student1.print();
        student1.show();
//        以上方法子类new的对象都可以实现

        Person person = new Student();//通过父类new的子类对象
        person.show();
//        person.stu();
//        person.chooseSubject();
//        父类无法通过子类来调用接口的功能
//        父类无法调用子类特有的方法

        person = new Teacher();
        person.show();
//        通过new不同的子类对象调用不同子类中重写的方法
        Person person1 = new Student(1,22,"lihua","男","506");
        String roomName = person1.getRoomName();
        System.out.println(roomName);
        person1 = new Teacher(2,32,"Teacher.Wang","女","306");
        String roomName1 = person1.getRoomName();
        System.out.println(roomName1);
//      多态
//       声明成父类类型，new子类对象，通过不同子类重写的同名方法来调用不同子类中该方法的不同用法
    }
}
